package com.cheney.common.sensitive.strategy;

/**
 * 脱敏策略
 */
public interface SensitiveStrategy {

    /**
     * 类别
     * <br/>
     * 如: 类别[电话]，就包含mobile phone telephone等
     *
     * @return 保留前缀个数
     */
    String category();

    /**
     * 保留前缀个数 (需满足 >= 0个)
     * <br/>
     * 如: 3454367, 保留前缀个数为2的话， 那么就是 34
     *
     * @return 保留前缀个数
     */
    int retainPrefixCount();

    /**
     * 保留后缀个数 (需满足 >= 0个)
     * <br/>
     * 如: 3454367, 保留后缀个数为2的话， 那么就是 67
     *
     * @return 保留后缀个数
     */
    int retainSuffixCount();

    /**
     * 用于替代明文的 密文字符
     * <br/>
     * 如: 对345436使用*进行前2后2的脱敏, 那么就是 34**36
     *
     * @return 用于替代明文的 密文字符
     */
    default char replaceChar() {
        return '*';
    }
}
